package com.mazaiting.blog.dao

import com.mazaiting.blog.domain.Article
import com.mazaiting.blog.domain.Category
import org.apache.ibatis.annotations.Mapper
import org.apache.ibatis.annotations.Param
import java.sql.Timestamp

/**
 * 文章 Dao
 */
@Mapper
interface ArticleDao {
    /**
     * 根据名字查询分类
     * @param uId 用户id
     * @return 数据的map集合
     */
    fun selectCategoryByUID(@Param("u_id") uId: Long): List<Category>

    /**
     * 根据名字查询分类
     * @param uId 用户id
     * @param cId 分类id
     * @return 数据的map集合
     */
    fun selectArticleByUID(@Param("u_id") uId: Long,
                           @Param("c_id") cId: Long): List<Article>

    /**
     * 根据名字查询分类
     * @param name 分类名称
     * @param uId 用户id
     * @return 数据的map集合
     */
    fun selectCategoryByNameAndUID(@Param("name") name: String,
                                   @Param("u_id") uId: Long): Category?

    /**
     * 添加分类
     * @param name 分类名称
     * @param u_id 用户id
     * @return 修改行数
     */
    fun addCategory(@Param("name") name: String,
                    @Param("u_id") u_id: Long,
                    @Param("lastModified") lastModified: Timestamp): Int

    /**
     * 添加文章
     * @param article 文章
     * @return 修改行数
     */
    fun addArticle(article: Article): Int

    /**
     * 根据名字查询文章
     * @param fileName 文章名称
     * @param u_id 用户id
     * @param c_id 分类id
     * @return 数据的map集合
     */
    fun selectArticleByNameAndId(@Param("fileName") fileName: String,
                                 @Param("u_id") u_id: Long,
                                 @Param("c_id") c_id: Long): Map<String, Any>?
}